相关疑难解决方法(0)

自定义类/对象的构造函数和初始化

我可以想象这个问题已经被问到了,但实际上我找不到任何合适的解决方案,所以请原谅这是一个多余的问题.

我有一个自定义类

class myClass_A
{
public:
    myClass_A();          // Constructor
    myFunction_A();       // Some function from Class A
};
Run Code Online (Sandbox Code Playgroud)

现在我有另一个自定义类,它有一个类型的成员 myClass_A

class myClass_B
{
public:
    myFunction_B();       // Some function from Class B

private:
    myClass_A m_instance; // Instance of Class A
}
Run Code Online (Sandbox Code Playgroud)

现在myFunction_B()myFunction_A()m_instance这样的方式调用方法:

myClass_B::myFunction_B()
{
    m_instance.myFunction_A();
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我编译我的代码(基本上就像我上面发布的示例),它将成功,没有任何警告或错误.所以我的问题是:

A.在这个例子中是否会调用构造函数?

B.我真的可以从未初始化的对象中调用方法吗?

C.假设没有调用构造函数但我仍然可以从该对象调用方法 - >这意味着我的类的成员仍未初始化?

对不起,如果这些问题有点愚蠢,但我觉得我现在的速度很慢.

c++ constructor initialization

9
推荐指数
1
解决办法
1万
查看次数

为什么需要在构造函数中初始化类的常量数据成员?

我想知道为什么类的常量数据成员需要在构造函数中初始化,为什么不在其他地方?这样做有什么影响而不是这样做?

我还看到,只有静态常量积分数据才能在类中初始化,而不能在类中初始化非数据成员.

例如: - 假设下面是我的班级声明

class A{
     int a; // This we can initialize at the constructor or we can set this member by calling "vSet" member function
     const int b;
     static const int c = 10; //This works fine
public:
     A();
     ~A();
     void vSet(int a);
     int iAdd();
     void vDisplay();    
};
Run Code Online (Sandbox Code Playgroud)

构造函数定义如下: -

编辑部分:由于之前的构造函数定义示例错误

 A::A():a(1),b(9){}
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我.提前致谢.

c++ constructor class-constants

7
推荐指数
3
解决办法
4万
查看次数

冒号在构造函数中意味着什么?

可能的重复:
C++奇怪的构造函数语法
变量在构造函数中的冒号之后C++构造函数名后面的冒号(:)有
什么作用?

对于下面的C++函数:

cross(vector<int> &L_, vector<bool> &backref_, vector< vector<int> > &res_) : 

    L(L_), c(L.size(), 0), res(res_), backref(backref_) {

    run(0); 

}
Run Code Online (Sandbox Code Playgroud)

冒号(":")告诉左右两部分之间的关​​系是什么?可能,这段代码可以说什么呢?

c++ syntax initialization ctor-initializer

6
推荐指数
1
解决办法
905
查看次数

这个C++语法叫什么?

可能重复:
构造函数中这个奇怪的冒号成员语法是什么?

我在Qt应用程序的构造函数中到处都看到它,但我不知道它叫什么.我正在努力寻找有关它的文档.

Browser::Browser(QTextBrowser& textBrowser, QObject* parent /*= 0*/)
: // <- What
m_textBrowser(textBrowser), // <- is
QObject(parent) // <- this stuff?
{
}
Run Code Online (Sandbox Code Playgroud)

我为我的新闻道歉.

c++ constructor

6
推荐指数
2
解决办法
295
查看次数

C#Object Constructor - 简写属性语法

几个月前,我读到了一种技术,如果传入的参数与局部变量匹配,那么你可以使用一些简短的语法来设置它们.为了避免这种情况

public string Method(p1, p2, p3)
{
    this.p1 = p1;
    this.p2 = p2;
    this.p3 = p3;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# class object

5
推荐指数
2
解决办法
1万
查看次数

错误:没有匹配的函数用于调用

继承人我的错误......

"在构造函数'NumGame :: NumGame(int&)'中:错误:没有用于调用'Category :: Category()'的匹配函数"

我在这里看了几个类似的问题,但似乎无法找到答案.我有一个基类类别,NumGame继承自它但不会编译.

class Category {

public:
    void virtual selection(int&);
    Category(int&);
    virtual ~Category(){};
private:
    int myRandNum;
};

Category::Category(int& a){
    myRandNum = a;
}

void Category::selection(int& a){
    cout << "I am NumGame version number... " << a << endl;
    cout << "Now Im playing... " << myRandNum << endl;
}

class NumGame : public Category {

public:
    void selection(int&);
    NumGame(int&);
    ~NumGame(){};
private:
    int myRandNum;
};

NumGame::NumGame(int& b){
    myRandNum = b;
}

void NumGame::selection(int& b) {

}
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
2
解决办法
4万
查看次数

在Java中是否存在成员初始化列表语法,如C++?

我是一名Java程序员,目前正在阅读GoF关于设计模式的书籍,其中的例子以C++和Smalltalk语法给出.我在C++中遇到了一个特定的语法,我发现它被称为成员初始化列表.从给出的答案来看,使用成员初始化列表似乎比使用成员变量的赋值更好(更有效).在Java中有类似的东西吗?如果没有,那么Java设计师应该有一个很好的理由不包含这个功能.你对此有何看法?

c++ java language-design

5
推荐指数
1
解决办法
2735
查看次数

自定义异常类的C++语法

我是C++的新手,并且发现了以下代码片段,用于从std :: exception扩展的自定义异常.我不理解的唯一部分是: err_msg(msg) {}构造函数定义之后.任何人都可以解释为什么这不是在函数括号中?

class my_exception : public std::exception {
  private:
    std::string err_msg;

  public:
    my_exception(const char *msg) : err_msg(msg) {};
    ~my_exception() throw() {};
    const char *what() const throw() { return this->err_msg.c_str(); };
};
Run Code Online (Sandbox Code Playgroud)

c++ exception custom-exceptions

5
推荐指数
1
解决办法
9061
查看次数

使用另一个类C++构造一个类

我是C++的新手,最近开始研究面向目标的编程.我想编写自己的线性代数模块来处理三维向量和3x3矩阵.我试图将矩阵定义为由三个向量组成的类.

class vector {
  public:
  double n1, n2, n3;
  vector (double a, double b, double c) {
         n1 = a; n2 = b; n3 = c;
         }
  };

class matrix {
  public:
         vector m1, m2, m3;
         matrix (vector a, vector b, vector c) {
                m1 = a; m2 = b; m3 = c;
                }
         };
Run Code Online (Sandbox Code Playgroud)

但是,我收到编译错误:

In constructor `matrix::matrix(vector, vector, vector)':
no matching function for call to `vector::vector()'
Run Code Online (Sandbox Code Playgroud)

我猜这个程序不知道如何使用我定义的向量类构造矩阵.但是我不明白为什么.如果有人能解释,我将非常感激.

c++ class

5
推荐指数
1
解决办法
212
查看次数

"不为参考成员提供初始化程序......"

经过一些谷歌搜索后,我无法找到这个问题的答案.我如何初始化它,为什么我需要?

#include "CalculatorController.h"


CalculatorController::CalculatorController(SimpleCalculator& aModel, ICalculatorView& aView)
{\\(this is the bracket informing me of the error)

fModel = aModel;
fView = aView;
}
Run Code Online (Sandbox Code Playgroud)

标题:

#pragma once

#include  "ICalculatorView.h"
#include "SimpleCalculator.h"

class CalculatorController
{
private:
 SimpleCalculator& fModel;
 ICalculatorView& fView;
public:
 CalculatorController(SimpleCalculator& aModel, ICalculatorView& aView);

 void run();
 ~CalculatorController();
};
Run Code Online (Sandbox Code Playgroud)

c++ oop object

5
推荐指数
1
解决办法
8126
查看次数