A:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
错误:error C2460: “One::test”: 使用正在定义的“One”
结论:删去One test;我们发现编译通过,那么问题就在One test身上,test这里是个对象,而在One里的test尚未分配内存就使用One 来定义对象,故失败。
B::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
错误:error C2061: 语法错误 : 标识符“one”
结论:在class two 前面加上class one;我们发现编译通过了,C++是按顺序编译类的,故在two编译的时候编译器必须存在one的声明~
C::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
结论:数组这一块蛮弱的 哎 整个C++都是哥的薄弱环节.能不能赶上雄大,看天意吧~
D::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
错误:“abstract declarator”: 对零大小数组的引用非法
改正:int (&k)[19]
收获:数组长度不是参数类型的一部分。函数不知道传递给它的数组的实际长度,编译器也不知道,当编译器对实参类型进行参数类型检查时,并不检查数组的长度。
构造函数参数列表可以调用构造函数
尽量使用成员初始化表,初始化const成员只能使用成员初始化表。
class b : x(4),y(7)。。。。{ ….};
class One {
public:
void fun1 ( One a);
void fun2 (One * b );
class Two {
};
private:
One * pone;
One test;
};
错误:error C2460: “One::test”: 使用正在定义的“One”
结论:删去One test;我们发现编译通过,那么问题就在One test身上,test这里是个对象,而在One里的test尚未分配内存就使用One 来定义对象,故失败。
B::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class two{
public:
void fun1(one* pone);
};
class one{
public:
one();
private:
};
错误:error C2061: 语法错误 : 标识符“one”
结论:在class two 前面加上class one;我们发现编译通过了,C++是按顺序编译类的,故在two编译的时候编译器必须存在one的声明~
C::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#include<iostream>
using namespace std;
void main()
{
//指针数组只能保存指针
int *a = new int[1];
int *b = new int[1];
int *c = new int[1];
int* e[3] = {a, b, c};
//二维数组指针
int array2[2][2];// = {{1,2},{3,4}};
int (*p)[2];
p = array2;
//引用的用法
int k = 2;
int &q = k;
q = 3;//修改q就等于修改k
cout<<3;
//数组引用
int test[5];
int (&l)[5] = test;
l[1] = 4;
cout<<test[1];
}
结论:数组这一块蛮弱的 哎 整个C++都是哥的薄弱环节.能不能赶上雄大,看天意吧~
D::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
void fun(int a[8]){
cout<<a[10];
};
//void fun (int (&a)[]){} ********************
void main()
{
//传递数组
int p[19] = {1,2,3,4,2,2,2,2,2,2,2,2,2,2,2};
fun(p);
//int (&a)[]//这样是失败的 *********************
int (&k)[19] = p; &&&&&&&&&&&&&&&&&&&&&&
fun(k);
}
错误:“abstract declarator”: 对零大小数组的引用非法
改正:int (&k)[19]
收获:数组长度不是参数类型的一部分。函数不知道传递给它的数组的实际长度,编译器也不知道,当编译器对实参类型进行参数类型检查时,并不检查数组的长度。
#include <iostream>//下列程序段有错吗?
using namespace std;
class A{ public: A(){cout<<"A"<<endl;};
};
class B {
public:
A a;
B() : a(){cout<<"B"<<endl;}
};
int main(){
B b(); //换成语句B b();呢? 函数?对象?
return 0;
}//
构造函数参数列表可以调用构造函数
尽量使用成员初始化表,初始化const成员只能使用成员初始化表。
class b : x(4),y(7)。。。。{ ….};