C++学习错题整理(一)

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 构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值