问题在下面的代码中,询问对单个位字段成员使用值初始化语法是否意味着零初始化或未初始化:
struct S { // S is POD
int a : 3;
int b : 1;
};
S s1;
S s2{};
s1.a; // uninitialized (ok, we understand this)
s1.b; // "
s2.a; // zero or junk?
s2.b; // "
以下是位字段的复习:
为具有多个位字段的结构创建零化构造函数通常是用遗留代码中丑陋的memset完成的,因为在构造函数初始化程序列表中重复使用值init语法的每个位
我昨天才知道,为初始化器列表项指定参数是可选的。然而,在这种情况下发生的规则是什么?
在下面的示例中,ptr是否会被初始化为0,切换为false,以及Bar default-constructed?我猜这个问题有点多余,因为如果未指定的参数值为==未定义的行为,则初始化器列表中几乎没有意义。
我是否还可以参考C++标准中的一节,该节规定了初始化器列表项未被赋予参数的情况下的行为?
class Bar
{
Bar() { }
};
class SomeClass;
class AnotherClass
{
public:
SomeClass *ptr;
bool tog
我使用Dart 2.1.0在Flutter中编程,遇到了这种情况:
mixin Salt {
final int pinches; // Immutable, and I want to delay initialization.
// Cannot declare constructors for mixin
}
class Meat with Salt {
Meat(int pinches) ... // How to initialize it?
}
Salt没有构造函数,所以我不能使用初始化器列表。pinches是final,所以我不能在Meat的构造函数中设置它。
在Dart中,与Java中的构造函数相比,立即分配值有什么区别吗?
class Example {
int x = 3;
}
vs
class Example {
int x;
Example() {
x = 3;
}
}
我之所以这样问,是因为当我使用Flutter并试图将一个使用setState的函数赋值给变量时,前者是不可能的,但后者是可能的。
问题
以下两种代码的输出是相同的,但本质上的区别是什么?
import 'dart:math';
class Point {
final num x;
final num y;
final num distanceFromOrigin;
Point(x, y)
: x = x,
y = y,
distanceFromOrigin = sqrt(x * x + y * y);
}
main() {
var p = Point(3, 4);
print(p.distanceFromOrigin);
}
我的
以下代码在运行时显示错误:
class Animal {
Animal object1 = new Animal();
public static void main(String[] args) {
Animal obj = new Animal();
}
}
这与Animal obj = new Animal();的代码略有不同,这一行与main方法的注释掉了。这段代码没有显示运行时错误。
class Animal {
Animal object1 = new Animal();
public static void m
我在尝试迁移到C++17时遇到了一个奇怪的问题,问题是在C++17中发生了一些变化(我不确定),在默认构造函数的情况下,列表初始化的工作方式有所不同。我试图搜索以获得更多信息,但我没有找到任何看起来相关的信息。
有人知道下面的代码在调用C++14而不是B()时在C++17中编译的原因吗?(我在gcc 8.2和7.3以及icc 19上都试过了)
struct A{
protected:
A() {}
};
struct B : public A {};
B f(){
return B(); //compilation OK
//return B{}; //compi
在Dart中,我有这样一个类,它保护getter/setter后面的_x,它允许我控制对_x的更改:
//in a.dart
class A {
int _x;
int get x => _x;
set x(int value) {
bool validation_ok=true;
//do some validation/processing
if (validation_ok) {
_x = value;
//perform side effects that should happen every time _x chan
我目前有一个匹配结构,它包含一个块列表。
public struct Match{
public List<Block> blocks;
}
当我尝试创建一个新的匹配(在本例中称为matchData)并将块添加到它的阻止列表时,我的编译器输出:
Use of unassigned local variable 'matchData'
我尝试通过以下操作初始化列表:
public struct Match{
public List<Block> blocks = new List<Block>();
}
这将导致以下错误:
St
因此,假设我有一个类调用A,它的构造函数为
A(String someA, int someB , String[] someC)
在另一个类中,我创建了一个main,它将其作为类变量。
private static String[] someC = new String[4];
private static ArrayList<A> thisA;
然后从dat文件中提取一些信息。
someA= readFile.nextLine(); //some normal string such as bob Billy
在下面的程序中,行int Test::i;做了什么。有人请解释一下
// Assume that integers take 4 bytes.
#include<iostream>
using namespace std;
class Test
{
static int i;
int j;
};
int Test::i;
int main()
{
cout << sizeof(Test);
return 0;
}
我对Dart很陌生,在某些类继承方面遇到了麻烦。我想知道如何正确覆盖子类中的类变量。
这是一个一般性的语言问题。我主要来自Python背景,我想我只是缺少了一些核心的Dart概念。
下面是我要找的一般情况:
我有一个基类Foo,它定义了一些类变量和方法。变量名对于Foo的所有子类都是通用的,并且这些方法是常见的行为。
基本上,我想做的是:
在foo.dart中
class Foo {
int _x;
int timesTwo() {
return _x * 2;
}
}
然后在bar.dart
import 'foo.dart';
class Bar e
假设我有这样一个类:
public class PositionList {
private Position[] data = new Position[0];
private int size = 0;
现在假设我用默认构造函数创建了一个新的PositionList对象,所以没有类似这样的参数:
PositionList list = new PositionList();
新的list对象有什么属性吗?它有没有size组件或data组件?它的特点是什么?
请有人给我指点一下C++标准的相应段落,或者如果我取消对文本({123})的注释,可以提供一些解释为什么我的代码不编译吗?
一般来说,我理解通过初始化程序列表使用默认成员初始化和初始化有什么问题,但我不能引用确切的原因。
enum class MY: int
{
A = 1
};
struct abc
{
int a;/*{123};*/ //compilation failed if uncommented
MY m;
};
abc a = {1, MY::A};
编译器错误,在未注释文本的情况下:
错误:无法将“{1,A}”从“”转换为“abc”
对于ex。我得到:"wrapper.h“
class wrapper : public QWidget
{
Q_OBJECT
public:
Wrapped_class m_class;
private:
QTimer* m_timer;
}
"Wrapped_class.h“
class Wrapped_class
{
public:
Wrapped_class();
public slots:
f(); // slot which is called when m_timer send signal timeout()
}
如果我有一个这样的类:
public class A
{
public A(string name)
{
Console.WriteLine("Mon");
}
}
public class B
{
private A m_a = new A("Tues");
public B()
{
m_a = new A("Wed");
}
}
我不在windows机器上,所以我不能测试输出。
它会是什么,但更重要的是为什么会这样呢?
也就是说,为什么私有变量
我有一个用大量普通的char*指针定义的结构,但也有一个对象成员。当我试图静态地初始化这样的结构时,我会得到一个编译器错误。
typedef struct
{
const char* pszA;
// ... snip ...
const char* pszZ;
SomeObject obj;
} example_struct;
// I only want to assign the first few members, the rest should be default
example_struct ex = { "a", "
当我在Map<String中使用“CartModel>”时,CartModel>_items会移除后期的初始化错误。但是,如果列表为空,则会出现后期初始化错误。
import 'package:flutter/material.dart';
import 'package:shop1/model/cart_item.dart';
class ShopProvider with ChangeNotifier {
late Map<String, CartItem> _items;
ShopProv
我认为现代的C++初始化程序列表对于初始化对象非常有用,以至于无需定义自己的构造函数:
struct point
{
float coord[3];
};
point p = {1.f, 2.f, 3.f}; // nice !
但是,当我的类从另一个类继承时,这个方法不起作用:
template<typename T>
class serializable
{
protected:
serializable() = default;
...
// other stuff
}
struct point : public seria
以下代码不使用Visual或联机GDB进行编译。我希望它能够编译,因为迭代器只是一个带有类型的类,它是公开继承的。这是不允许的,还是不适用于VS2017?
template<typename T>
struct Gen : public std::iterator<std::input_iterator_tag, T>
{
T value;
};
int main()
{
Gen<int> g = Gen<int>{ 10 }; // this doesnt
Gen<int> g2 = Gen<i
假设我有以下Dart类,它的构造函数中有一个命名参数:
class TestClass {
final int someValue;
TestClass({this.someValue});
}
void someMethod() {
TestClass testClass = new TestClass(someValue: 10);
print(testClass.someValue);
}
我怎样才能为这个领域添加一个吸气剂呢?我试着用这样的方式:
class TestClass {
final int _someValue;
TestClass({this.s
我已经宣布了一个名为成员的班级。然后,我用成员类型分配了一个数组。当我尝试将事物放入数组中时,它会给出以下错误:
Exception in thread "main" java.lang.NullPointerException
at HW2_2.main(HW2_2.java:15)
这是我的密码:
import c.Member;
import java.util.Scanner;
public class HW2_2
{
public static void main(String []args)
{
Member[] p
我正在尝试创建一个作为灵活枚举工作的类。我有这个想法,有两个额外的静态方法,允许我向该列表添加新成员,并仅从该列表中获取成员。
public class LikeEnum
{
private static List<LikeEnum> list = new List<LikeEnum>()
{ new LikeEnum("One"), new LikeEnum("Two") };
private string value;
private LikeEnum(str
我有以下代码:
class A{
public:
A(int* i){
std::cout << "in A()" << i << std::endl;
}
};
class B: public A{
public:
B(): i{new int{10}}, A{i}{
std::cout << "in B()" << std::endl;
}
private:
int* i;
};
int main()
{
B b
我来自Java背景。我有下面的节目。
#include <string>
#include <iostream>
class First {
public:
First(int someVal): a(someVal) {
}
int a;
};
class Second {
public:
First first;
Second() { // The other option would be to add default value as ": first(0)"
f
如何使用Dart中默认构造函数中私有实例变量的setter?
给定示例类:
class A {
String name;
int _age;
int get age => _age;
set age(age) {
_age = age ?? 0;
}
A(this.name, this._age);
}
如何使用此构造函数来遍历set age()函数?除了使用factory之外,还有别的办法吗?我想做这样的事
A(this.name, newAge): age = newAge;
但是,我遇到一个错误,迫使我只能从构造函数中设置实例变量,这让我只能复