C++学习错题整理
本人本科小白,学习c++,把遇到的问题记录在此,找到错因,并分享解决方法。欢迎大牛对本文指点,欢迎大家一起交流讨论
error: expected primary-expression before ‘.’ token|---------------------------忘记定义类的对象
//Pizza 信息记录,作业:week4
#include <iostream>
#include <string>
using namespace std;
class pizza
{
public:
string brand;
double diameter;
double weight;
void show()
{
cout<<"brand: "<<brand<<endl;
cout<<"weight: "<<diameter<<endl;
cout<<"number: "<<weight<<endl;
}
};
int main()
{
cout<<"请输入pizza的公司名: ";
cin>>pizza.brand; //报错部分,pizza 是类,不是对象
cout<<"请输入pizza的直径: ";
cin>>pizza.diameter;
cout<<"请输入pizza的质量: ";
cin>>pizza.weight;
show();
return 0;
}
构造函数和new
#include <iostream>
using namespace std;
class CandyBar
{
private:
char *brand[20];
double weight;
int number;
public:
CandyBar(char *b,double w,int n)
{
this->brand[0] = b;
weight = w;
number =n;
}
void show()
{
cout<<"brand: "<<*brand<<endl;
cout<<"weight: "<<weight<<endl;
cout<<"number: "<<number<<endl;
}
};
int main()
{
CandyBar *p;
p = new CandyBar; //**报错**
*p = CandyBar("Mocha Munch",2.3,350);
p->show();
delete p;
return 0;
}
|error: no matching function for call to ‘CandyBar::CandyBar()’|
没有与CandyBar()匹配的函数
new格式: 类型名 *指针名 = new 类型名 前后两个类型名一致。
类型名 *指针名 = new 构造函数名,(变量名==构造函数名)
new 作用:分配内存空间
构造函数作用:分配内存空间,同时也可以进行初始化。
new可以用在类上,分配一个类的对象的空间,但是,类名和构造函数名是一样的,类中构造函数有且仅有一个,在new分配内存时,用到的构造函数CandyBar()是要输入参数的,由于上例中没写参数,故报错。
int main()
{
CandyBar *p;
p = new CandyBar("Mocha Munch",2.3,350);
p->show();
delete []p;
return 0;
}
*new格式:类型名 指针名 = new 构造函数