【有趣的C/C++问题】教程文章相关的互联网学习教程文章

C++学习笔记--异常简介【代码】

C++异常是对程序运行过程中发生的异常情况(如被0除)的一种响应。异常提供了将控制权从程序的一个部分传递到另一部分的途径。1、对异常的处理有3个部分组成:(1)引发异常(2)捕获有处理程序的异常(3)使用try块C++异常的简单例子:double hmean(double a,double b) {if (a == -b)throw "bad hmean() arguments: a = -b not allowed";//引发异常return 2.0 * a * b / (a + b); }void test_exception() {double x, y, z;cout <<...

2015年诺基亚C/C++笔试题【代码】

以下5个题是根据当时的笔试回忆的,不是特别准确,但是大致的意思是已表达到,希望对正在求职C/C++开发工程师的人有所帮助。1.class A{char c_A; };class B : public class A{int i_A;virtual funcA();virtual funcB(); }; sizeof(A) = _____;sizeof(B) = _____.2.已知一个结构体:struct A{int a;float *b;char c;double d; }; 其中,a占用_____字节,b占用_____字节。3.试着说明一下foo1为什么比foo2性能比较好。void foo1(){......

C++【面试题】:类实现万年历(日期计算器),(含构造函数、拷贝构造、运算符重载、析构函数)【代码】

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stdlib.h> using namespace std;class Date { public: Date(int year=0, int month=0, int day=0) :_year(year) , _month(month) , _day(day) { cout << "构造函数" << endl; } Date( const Date& d) { cout << "拷贝构造函数" << endl; _year = d._year; _month = d._month; _day = d._d...

C++语言学习(十五)——C++抽象类与接口【代码】

C++语言学习(十五)——C++抽象类与接口 一、抽象类与接口1、抽象类简介面向对象的抽象类用于表示现实世界的抽象概念,是一种只能定义类型,不能产生对象的类(不能实例化),只能被继承并被重写相关函数,直接特征是相关函数没有完整实现。C++语言没有抽象类的概念,通过纯虚函数实现抽象类。纯虚函数是指定义原型的成员函数,C++中类如果存在纯虚函数就成为了抽象类。抽象类只能用作父类被继承,子类必须实现父类纯虚函数的具体...

C++ 结构体初始化【代码】

c++结构体1. 构造函数和运算符这样没有默认值 struct node{int id; node*left;node(int a):id(a),left(nullptr){}}; 这样要注意如下的问题node * root=new node(0); node * y; node* x=root,z;//这样会报错 no-matching-function-for-call-to-nodenode; 原因应该是 node* x=root,z;的z被当做了构造函数参数的一部分?改成node * x=root;node* z;就没问题了 这样有默认值(new的时候可以先不赋值) struct Point{int x,y;...

c++工厂模式(初级)【代码】【图】

初识工厂模式我们先看工厂模式的介绍这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。简单来说,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽象...

C++笔记(5)——浮点数的比较【代码】【图】

判断是否相等因为一个浮点数的存储并不总是精确的,例如在经过大量计算之后可能会将3.14保存为3.1400000000001或者3.1439999999999,这时候如果直接用==来比较这两个数的话会输出错误的结果,false(C++中==只有在两个数字完全相同的情况下才判定为true)。所以需要引入极小数eps来修正,只要不超出这个误差,那么就判定为true。通常定义一个eps为常量1e-8:const double eps = 1e-8;对应的定义判定是否相等的操作Equ:#define Equ(...

用C++的类和结构体DIY静态链表及其接口函数【图】

转载请注明出处:http://blog.csdn.net/hongkangwl/article/details/21882459关于静态链表的C实现,网上已经烂大街了,这里就不在废话了。对于本文,纯粹是本屌闲的蛋疼,如有异议,请轻喷。对于每个节点,这里也不能免俗,使用结构体实现struct staticlinklistnode {int data;//数据int next;//下个数据的存储位置bool used;//是否放在链表中了 };静态链表的类主要仿照STL中实现了一些接口函数class staticlinklist { private:sta...

【C++】智能指针的作用,模拟实现auto_ptr,scoped_ptr,shared_ptr【代码】

RAII(Resource Acquisition Is Initialization):资源分配即初始化,定义封装一个类,用来实现调用构造函数时就可完成资源的分配和初始化,在调用析构函数就可完成资源的清理,以实现对资源的初始化和清理。智能指针:用自动化或者说智能的指针来实现对动态内存的释放。它是一个类,有类似指针的功能。常见的智能指针有:auto_ptr/scoped_ptr/scoped_array/shared_ptr/shared_array,我们今天先讲以下三种。一、AutoPtr首先,先介绍...

centos6 yum 安装 install c++4.8 gcc4.8【代码】

cd /etc/yum.repos.d wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo yum --enablerepo=testing-1.1-devtools-6 install devtoolset-1.1-gcc devtoolset-1.1-gcc-c++This will install it most likely into /opt/centos/devtoolset-1.1/root/usr/bin/Then you can tell your compile process to use the gcc 4.7 instead of 4.4 with the CC variableexport CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc ...

2014061404吃豆豆(C++)

#include<cstdio> #include<algorithm> #define N 10010 using namespace std; int n,i,j,rd[N],t,w,tot,id[N]; int dp,pre[3000000],p[N],tt[3000000],z[N],ID[N],tmp; int f[2500][2500]; struct g{ int x,y; }a[N]; bool cmp(g a,g b) { if (a.x==b.x) return a.y<b.y; return a.x<b.x; } void link(int x,int y) { dp++;pre[dp]=p[x];p[x]=dp;tt[dp]=y; } void Dp(int x,int y) { int i; ...

WinsockPragramming(1) Server(C++版)【代码】

预准备: 在VC中连接动态链接库WS2_32.DLL(所有Winsock函数均从该库导出)。具体做法:“工程”——>“设置”——>“对象/库模块”,添加“WS2_32.DLL”。创建服务器流程 1、初始化套接字库 调用函数WSAStartup(),函数原型:int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);函数调用成功返回0。参数wVersionRequested表示当前套接字库的版本号。WORD wVersionRequested=MAKEWORD(2,0);表示版本号为2.0 参数lpWSA...

C++(成员属性设置为私有)【代码】

成员属性设置为私有优点1: 将所有成员属性设置为私有,可以自己控制读写权限优点2: 对于写权限,我们可以检测数据的有效性示例:#include <iostream> #include <string> using namespace std;class Person{ public://姓名设置可读可写void setName(string name){m_Name=name;}string getName(){return m_Name;}//获取年龄int getAge(){return m_Age;}//设置年龄void setAge(int age){if(age<0 || age>10){cout<<"年龄不符"<<endl...

C++ 检测流状态

在C++中,函数eof(), fail(), good(), bad()等可以检测流操作的状态。我们之前已经学过了eof()和fail()函数,他们分别用于检测文件末尾和文件是否存在。C++还提供了另外几个检测流状态的函数。实际上,每个流都包含一个位集合,起到标识位的作用。这些位的值(0或1)指明了流的状态。下面表格列出了这些流状态标识位。(置位和复位简单来讲就是:复位就是清0,置位就是置1)标识位描述ios::eofbit当到达文件末尾时置位ios::failbit...

C++关键字【代码】

1 const2 mutable 1 const 类的数据如果是const属性,需要初始化,否则报错error C2789: “fush::d”: 必须初始化常量限定类型的对象 1struct fushu 2{ 3constint d;//error C2789: “fush::d”: 必须初始化常量限定类型的对象4 }; 类的函数如是是const属性,则内部不能修改数据,否则报错error C3490: 由于正在通过常量对象访问“a”,因此无法对其进行修改 1struct fushu2{3int a;4 mutable int b;5void showabc() const 6 ...